iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0

今天要開始要做專題了qq好累好想睡

但今天的題目大意是:題目給你一個整數陣列 nums,你要找到一個 連續的子陣列(subarray),使它的總和最大,並回傳這個總和。
注意:
「子陣列」必須是 連續 的,不可以跳著選,至少要選一個元素,不能回傳空的。

class Solution {
    public int maxSubArray(int[] nums) {
        // 假設陣列至少有一個元素(LeetCode 保證)
        int maxSoFar = nums[0];   // 到目前為止看到的最大子陣列和
        int currentMax = nums[0]; // 以當前位置結尾的最大子陣列和

        // 從索引 1 開始掃描(因為已經把索引0 當初始值處理)
        for (int i = 1; i < nums.length; i++) {
            // 要不要把當前元素 nums[i] 加到前一個子陣列(currentMax)上?
            // 或者從 nums[i] 重新開始一段新的子陣列?取較大的那個。
            currentMax = Math.max(nums[i], currentMax + nums[i]);

            // 更新整體最大值
            maxSoFar = Math.max(maxSoFar, currentMax);
        }

        return maxSoFar;
    }
}

上一篇
快來不及之LeetCode 69. Sqrt(x)
下一篇
LeetCode 141 Linked List Cycle
系列文
Chatting with ChatGPT——一天學習一題Leetcode23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言